使用细节层次 (Level of Detail) 节点

如果想根据 细节层次 (Level of Detail) 节点的查看距离,显示相同/不同节点的不同外观时,您可以使用 细节层次 (Level of Detail) 节点。细节层次 (Level of Detail) 节点的每个子节点用于设置一个单个的外观和(当外观被选中和显示时)约束。约束可以是:

细节层次 (Level of Detail) 节点只会影响渲染,因此您无法在布局中使用这些节点。细节层次 (Level of Detail) 节点的大小是其最大子节点的大小,即使该子节点不可见。

您只有在其 场景 (Scene) 节点使用 旧渲染通道(已停用)(Legacy Render Pass, deprecated) 渲染 场景 (Scene) 节点的内容时,才能使用 细节层次 (Level of Detail) 节点。

使用 细节层次 (Level of Detail) 节点

要使用 细节层次 (Level of Detail) 节点,请执行以下操作:

  1. 设置 场景 (Scene) 节点渲染一个 细节层次 (Level of Detail) 节点:
    1. 素材库 (Library) 按下 Alt 并右键点击 渲染 (Rendering) 中,选择 旧渲染通道(已停用)(Legacy Render Pass, deprecated),并在 属性 (Properties) 中设置其属性以获取所需的渲染结果。
    2. 工程 (Project) 选择要创建 细节层次 (Level of Detail) 节点的 场景 (Scene) 节点,并在 属性 (Properties) 中将 渲染通道 (Render Pass) 属性设置为您创建的 旧渲染通道(已停用)(Legacy Render Pass, deprecated)
  2. 工程 (Project) 按下 Alt 并右键点击 您设置的 场景 (Scene) 节点中,选择 细节层次 (Level of Detail)
    请注意,您只能在 3D 节点中创建 细节层次 (Level of Detail) 节点。
  3. 属性 (Properties) 中将 类型 (Type) 属性设置为:

    例如,设置类型 (Type)距离 (Distance)

  4. 工程 (Project) 中,为 细节层次 (Level of Detail) 节点添加子节点。
    例如,添加一个球体 (Sphere)、一个方框 (Box) 和一个平面 (Plane) 节点。
    对于您为 细节层次 (Level of Detail) 节点添加的每个节点,根据您选择的 细节层次 (Level of Detail) 节点的类型,Kanzi Studio 会添加 最短距离 (Minimum Distance)最小面积 (Minimum Area) 属性。
  5. 选择您为 细节层次 (Level of Detail) 节点添加的每个节点,并在 属性 (Properties) 中,根据 细节层次 (Level of Detail) 节点的类型,设置 最短距离 (Minimum Distance)最小面积 (Minimum Area) 属性值,以定义 细节层次 (Level of Detail) 节点何时显示每一项。
    例如,如果将 类型 (Type) 设置为距离 (Distance),请在 工程 (Project) 中选择:
    1. 球体 (Sphere) 并将其 最短距离 (Minimum Distance) 属性设置为 0。
    2. 方框 (Box) 并将其 最短距离 (Minimum Distance) 属性设置为 10。
    3. 平面 (Plane) 并将其 最短距离 (Minimum Distance) 属性设置为 20。

    当沿 Z 轴移动 细节层次 (Level of Detail) 节点或预览摄像机时,Kanzi 会显示其距离值仅次于 细节层次 (Level of Detail) 节点与预览摄像机之间距离的那个子节点。

在 API 中使用 细节层次 (Level of Detail) 节点

要创建具有三个细节层次的距离细节层次选择器节点:

//创建一个名为 LOD 选择器的细节层次选择器节点。
LevelOfDetail3DSharedPtr lodSelector = LevelOfDetail3D::create(domain, "LOD selector");

//添加 3 个细节层次,每个层次一个子对象。
lodSelector->addChild(lodHigh);
lodSelector->addChild(lodMedium);
lodSelector->addChild(lodLow);

//设置细节层次选择器节点,以便基于细节层次选择器节点
//与预览摄像机之间的距离显示细节层次选择器节点的子对象。
lodSelector->setType(LevelOfDetail3D::LodTypeDistance);
//当与预览摄像机至少相距 10.0f 时,
//请使用低层次的距离子对象 (lodLow)。
LevelOfDetail3D::setMinimumDistance(*lodLow, 10.0f);
//当与预览摄像机至少相距 5.0f 但不到 10.0f 时,
//请使用中等层次的距离子对象 (lodMedium)。
LevelOfDetail3D::setMinimumDistance(*lodMedium, 5.0f);
//当与预览摄像机相距不到 5.0f 时,
//请使用高层次的距离子对象 (lodHigh)。
LevelOfDetail3D::setMinimumDistance(*lodHigh, 0.0f);

有关详细信息,请参阅 API reference 中的 LevelOfDetail3D 类。

细节层次 (Level of Detail) 属性类型和消息

要查看 细节层次 (Level of Detail) 节点可用属性类型和消息的完整列表,请参阅 Level of detail

另请参阅

使用空节点 (Empty Node) 节点